package com.cn.组件作用域;

import com.cn.组件注册.old.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;

/**
 * @Auther: 代理仁
 * @Date: 2019/7/7 22:12
 * @Description:注册组件时的作用域
 */
@Configuration
public class ScopeConfig {
    //@Scope:设置组件的作用域:默认单列singleton：单实例的（默认值）：ioc容器启动会调用方法创建对象放到ioc容器中。
    //prototype：多实例的：ioc容器启动并不会去调用方法创建对象放在容器中。每次获取的时候才会调用方法创建对象；
    //request：同一次请求创建一个实例
    //session：同一个session创建一个实例

    //@Lazy懒加载,只针对单列的,在使用时,在创建对象,且只创建一次
    @Scope
    @Lazy
    @Bean
    public User getUser(){
        System.out.println("默认作用域为单列,ioc启动自动创建");
        System.out.println("@Lazy懒加载,只针对单列的,在使用时,在创建对象,且只创建一次");
        return new User(22,"测试组件作用域");
    }
}
